﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.Linq;
using System.Linq;

namespace ProyectoEscuela
{
    public partial class frmCalificaciones : ProyectoEscuela.frmABM
    {
        dbProyectoEscuelaDataContext dbPE = Global.getInstance().db;
        Alumno malumno;

        public frmCalificaciones()
        {
            InitializeComponent();
            malumno = new Alumno();
        }

        private void btnBuscar_Click(object sender, EventArgs e)
        {
            frmBuscarPersona frmBus = new frmBuscarPersona("alumno");

            try
            {

                if (this.txbNumeroDoc.Text.Trim().Length == 0)
                {

                    frmBus.ShowDialog();
                    malumno = frmBus.getAlumno();
                    
                    //uSR01.setAgente(mAgente);
                    txbNumeroDoc.Text = malumno.Numdoc;
                    lblApyNom.Text = malumno.Apellido + " " + malumno.Nombre;


                }
                else
                {
                   malumno=malumno.getAlumno(this.cbxTipoDoc.Text, this.txbNumeroDoc.Text);
                    
                    //uSR01.setAgente(mAgente);
                   lblApyNom.Text = malumno.Apellido + " " + malumno.Nombre;

                }

                
            }
            catch (Exception ex)
            {

                System.Windows.Forms.MessageBox.Show(ex.Message);
            }


            
            
            
           // malumno = dbPE.Personas.Single(p => p.Numdoc == txbNumeroDoc.Text);
            
            var cursos = from alucur in dbPE.AlumnoCursos where alucur.IdAlumno == malumno.idPersona select alucur;
            cursoBindingSource.Clear();
            foreach (AlumnoCurso c in cursos)
            {
                cursoBindingSource.Add(c.Curso);                
            }
            AlumnoCurso aluCur = cursos.First<AlumnoCurso>();
            Curso curso=aluCur.Curso;
            materiaBindingSource.Clear();
            foreach (CursoMateria m in curso.CursoMaterias)
            {
                materiaBindingSource.Add(m.Materia);
            }
            dgvMaterias.DataSource = materiaBindingSource;

            
          
                   

            var calific = from cal in dbPE.AluCursoMats
                            where  cal.IdAlumno == malumno.idPersona
                           //&& cal.IdAspecto_Materia == int.Parse(dgvMaterias.Rows[SelectedRows[0].Index].Cells["IdMateria"].Value.ToString())
                           && cal.IdCurso == int.Parse(cbxGrado.SelectedValue.ToString())
                            select new
                            {
                                Nombre = cal.AlumnoCurso.Persona.Nombre,
                                Apellido = cal.AlumnoCurso.Persona.Apellido,
                                Materia=cal.Materia.Nombre,
                                Calificacion =cal.Calificacion,
                                Periodo = cal.Periodo_Calif,
                            };
            dgvCalificaciones.DataSource = calific;

        }

        private void aluCursoMatBindingNavigatorSaveItem_Click(object sender, EventArgs e)
        {
            //this.Validate();
            //this.aluCursoMatBindingSource.EndEdit();
            //this.tableAdapterManager.UpdateAll(this.proyectoEscuelaDataSet);

        }

        private void frmCalificaciones_Load(object sender, EventArgs e)
        {
            //cbxGrado.DataSource = dbPE.Cursos;
            cbxMateria.DataSource = dbPE.Materias;
            //cbxGrado.DisplayMember = "Nombre_Curso";
            //cbxGrado.ValueMember = "IdCurso";
            cbxMateria.DisplayMember = "Nombre";
            cbxMateria.ValueMember = "IdMateria";

        }

        private void cbxGrado_SelectionChangeCommitted(object sender, EventArgs e)
        {
            //Curso curso = dbPE.Cursos.Single(cur => cur.IdCurso == int.Parse(cbxGrado.SelectedValue.ToString()));
            //foreach (CursoMateria cm in curso.CursoMaterias)
            //{
            //    materiaBindingSource.Add(cm.Materia);
            //}
        }

        private void cbxMateria_SelectionChangeCommitted(object sender, EventArgs e)
        {
            var calific = from cal in dbPE.AluCursoMats
                          where cal.IdAlumno == malumno.idPersona
                          && cal.IdMateria == int.Parse(cbxMateria.SelectedValue.ToString()) && cal.IdCurso == int.Parse(cbxGrado.SelectedValue.ToString()) 
                          select new
                          {
                              Nombre = cal.AlumnoCurso.Persona.Nombre,
                              Apellido = cal.AlumnoCurso.Persona.Apellido,
                              Materia = cal.Materia.Nombre,
                              Calificacion = cal.Calificacion,
                              Periodo = cal.Periodo_Calif,
                          };
            
            dgvCalificaciones.DataSource = calific;
        }

        private void dgvMaterias_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
           

        }

        private void dgvMaterias_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {

           
        }

        private void dgvMaterias_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            var calific = from cal in dbPE.AluCursoMats
                          where cal.IdAlumno == malumno.idPersona
                          && cal.IdMateria == int.Parse(dgvMaterias.Rows[e.RowIndex].Cells["IdMateria"].Value.ToString())
                         && cal.IdCurso == int.Parse(cbxGrado.SelectedValue.ToString())
                          select new
                          {
                              //Nombre = cal.AlumnoCurso.Persona.Nombre,
                              //Apellido = cal.AlumnoCurso.Persona.Apellido,
                              Materia = cal.Materia.Nombre,
                              Calificacion = cal.Calificacion,
                              Periodo = cal.Periodo_Calif,
                          };
            dgvCalificaciones.DataSource = calific;
        }

        private void btnSalir_Click(object sender, EventArgs e)
        {
            this.Dispose();
            this.Close();
        }

        private void label3_Click(object sender, EventArgs e)
        {

        }
    }
}
